<template>
  <view class="login-container">
    <uni-icons type="contact-filled" size="100" color="#AFAFAF"></uni-icons>
    <button type="primary" class="btn-login" @click="getUserProfile">一键登录</button>
    <text class="tips-text">登录后尽享更多权益</text>
  </view>
</template>

<script>
import { mapMutations,mapState } from 'vuex';

export default {
	computed:{
		...mapState('m-user',['redirectInfo'])
	},
  methods: {
    ...mapMutations('m-user', ['updateUserInfo','updateToken','updateRediectInfo']),

    // 获取用户基本信息
    getUserProfile(e) {
      uni.getUserProfile({
        desc: '你的授权信息',
        success: (res) => {
          this.updateUserInfo(res.userInfo);
          this.getToken(res);
        },
        fail: (res) => {
          return uni.$showMsg('您取消了授权！');
        },
      });
    },
    async getToken(info) {
      const [err, res] = await uni.login({}).catch((err) => err);
	  console.log(info)
	   console.log(res)
	  if(err||res.errMsg!=='login:ok')return uni.$showMsg('登陆失败！')
     const query={
		 code:res.code,
		 encryptedData:info.encryptedData,
		 iv:info.iv,
		 rawData:info.rawData,
		 signature:info.signature
	 }
	 const {data: loginResult}=await uni.$http.post('http://localhost:8020/login',query)
	console.log(loginResult)
	 this.updateToken(loginResult.token)
	 //this.updateToken("rwfefdwed")
	 this.navigateBack()
    },
	navigateBack(){
		if(this.redirectInfo&&this.redirectInfo.openType==='switchTab'){
			uni.switchTab({
				url:this.redirectInfo.from,
				complete: () => {
					this.updateRediectInfo(null)
				}
			})
		}
	}
  },
};
</script>

<style lang="scss">
.login-container {
  height: 750rpx;
  background-color: #f8f8f8;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  &::after {
    content: '';
    display: block;
    width: 100%;
    height: 40px;
    background-color: white;
    border-radius: 100%;
    transform: translateY(50%);
  }
  .btn-login {
    width: 90%;
    border-radius: 100px;
    margin: 15px 0;
    background-color: #c00000;
  }
  .tips-text {
    font-size: 12px;
    color: gray;
  }
}
</style>